Показано с 1 по 10 из 11

Тема: [MV -+ MZ]PictureOnSkillObserve

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Бывалый Аватар для Darchan Kaen
    Информация о пользователе
    Регистрация
    17.06.2013
    Адрес
    Одесса
    Сообщений
    851
    Записей в дневнике
    3
    Репутация: 47 Добавить или отнять репутацию

    По умолчанию [MV -+ MZ]PictureOnSkillObserve

    Название плагина: DKR_PictureOnSkillObserve
    Автор: DarchanKaen (основной плагин), Yoji Ojima (честно сворована техника отображения текста картинкой)
    Версия: 2.0
    Дата выхода:
    Версия 2.0 - 27.05.2021.
    Версия 1.0 - 24.05.2021
    Описание плагина:
    Плагин позволяет отображать Картинку / Описание при выборе скила в бою, для каждого скила - свою.

    Использование плагина:
    Одинаково и для MV , и для MZ (в эвенте, в команде "Скрипт")!

    В Примечании к Скилу напишите:
    <ImageOnChooseSkill>
    Название файла картинки БЕЗ РАСШИРЕНИЯ И КАВЫЧЕК! (например: Actor1 )
    </ImageOnChooseSkill>
    И / ИЛИ
    <DescrOnChooseSkill>
    Текст описания. Допустимы коды сообщений, например: цвета типа \C[n]
    </DescrOnChooseSkill>

    - Включение и отключение показа Картинки:
    DKR.PictureOnSkillObserve.enablePicture(); - показывать Картинку / Описание.
    DKR.PictureOnSkillObserve.dissablePicture(); - не показывать Картинку / Описание.
    DKR.PictureOnSkillObserve.setObserverPictureMode(' MODE'); - задать режим отображения Картинки / Описания, где 'MODE' - режим, варианты:

    'IMAGE' (Картинка, указанная между тегов ImageOnChooseSkill в Примечании скила),
    'DATA' (Полное описание - генерируется автоматически),
    'SIMPLE' (Упрощенное описание - генерируется автоматически),
    'DESCR' (Текст между тегов DescrOnChooseSkill, указанный в Примечании скила).
    По-умолчанию работает режим 'DATA' !

    - Настройки отображения Картинки:
    DKR.PictureOnSkillObserve.setPictureNumber(); - задать номер Картинки; по-умолчанию: 1.
    DKR.PictureOnSkillObserve.setPictureOrigin(); - задать начало координат Картинки; по-умолчанию: 0.
    DKR.PictureOnSkillObserve.setPictureCoordX(); - задать координату X Картинки; по-умолчанию: 20.
    DKR.PictureOnSkillObserve.setPictureCoordY(); - задать координату Y Картинки; по-умолчанию: 300.
    DKR.PictureOnSkillObserve.setPictureScaleX(); - задать масштаб X Картинки; по-умолчанию: 100.
    DKR.PictureOnSkillObserve.setPictureScaleY(); - задать масштаб Y Картинки; по-умолчанию: 100.
    DKR.PictureOnSkillObserve.setPictureOpacity(); - задать прозрачность Картинки; по-умолчанию: 255.
    DKR.PictureOnSkillObserve.setPictureBlendMode (); - задать режим смешивания Картинки; по-умолчанию: 0.

    Спойлер Код плагина:


    Спойлер MV, версия 2.0:

    Код:
    /*:
     *-----------------------------------------------------------------------------
     *  DKR PictureOnSkillObserve
     *-----------------------------------------------------------------------------
     *  For: RPGMAKER MV 
     *  DKR_PictureOnSkillObserve_2_MV.js
     *-----------------------------------------------------------------------------
     *  26.05.2021 - Версия 2.0.0
     *-----------------------------------------------------------------------------
     * Поставляется AS-IS.
     * Вся ответственность при использовании - на Пользователе!
     *-----------------------------------------------------------------------------
     *-----------------------------------------------------------------------------
     * @author DarchanKaen
     * @target MV
     * @plugindesc (v.2.0.0) Плагин позволяет отображать Картинку / Описание при выборе скила в бою, для каждого скила - свою.
     * @help
     *   DKR PictureOnSkillObserve 2.0 MV
     * ----------------------------------------------------------------------------
     * ---Общая информация:
     * Плагин позволяет отображать Картинку или Описание
     * (автоматическое или ручное) при выборе скила в бою,
     * для каждого скила - свою Картинку / Описание.
     * Картина / Описание отображается в фоне Окна умений.
     * Для режима Картинок, они должны быть в папке "\img\pictures".
     * Для режимов Описания, в папке "\img\pictures" должен быть (!!!) 
     * файл "onSkillObserveBackground.png" - это фон описания 
     * (размер изображения 816x624).
     * ---Использование:
     * В Примечании к Скилу напишите:
     *<ImageOnChooseSkill>
     *	Название файла картинки БЕЗ РАСШИРЕНИЯ И КАВЫЧЕК! (например: Actor1 )
     *</ImageOnChooseSkill>
     * И / ИЛИ
     * <DescrOnChooseSkill>
     * 	Текст описания. Допустимы коды сообщений, например цвета типа \C[n]...
     * </DescrOnChooseSkill>
     * Если у скила в Примечании нет данных тегов, то ничего доп-го не отображается.
     * ---Команды (для раздела "Скрипт"):
     * - Включение и отключение показа Картинки / Описания:
     * DKR.PictureOnSkillObserve.enablePicture(); - показывать Картинку / Описание.
     * DKR.PictureOnSkillObserve.dissablePicture(); - не показывать Картинку / Описание. 
     * DKR.PictureOnSkillObserve.dissablePicture(); - не показывать Картинку / Описание. 
     * DKR.PictureOnSkillObserve.setObserverPictureMode('MODE'); - задать режим отображения Картинки / Описания.
     * где 'MODE' - режим, варианты: 
     * 'IMAGE' (Картинка), 
     * 'DATA' (Полное описание), 
     * 'SIMPLE' (Упрощеное описание), 
     * 'DESCR' (Текст между тегов DescrOnChooseSkill).
     * режим указывается в ковычках, режим может быть выбрано ТОЛЬКО один; по-умолчанию: 'DATA'.
      - Настройки отображения Картинки (не влияет на режимы Описания!):
     * DKR.PictureOnSkillObserve.setPictureNumber(N); - задать номер Картинки; по-умолчанию: 90. Номер должен меньше 95!
     * DKR.PictureOnSkillObserve.setPictureOrigin(N); - задать начало координат Картинки; по-умолчанию: 0.
     * DKR.PictureOnSkillObserve.setPictureCoordX(N); - задать координату X Картинки; по-умолчанию: 20.
     * DKR.PictureOnSkillObserve.setPictureCoordY(N); - задать координату Y Картинки; по-умолчанию: 300.
     * DKR.PictureOnSkillObserve.setPictureScaleX(N); - задать масштаб X Картинки; по-умолчанию: 100.
     * DKR.PictureOnSkillObserve.setPictureScaleY(N); - задать масштаб Y Картинки; по-умолчанию: 100.
     * DKR.PictureOnSkillObserve.setPictureOpacity(N); - задать прозрачность Картинки; по-умолчанию: 255.
     * DKR.PictureOnSkillObserve.setPictureBlendMode(N); - задать режим смешивания Картинки; по-умолчанию: 0.
     * где N - значание в виде целого не отрицательного числа.
     * ----------------------------------------------------------------------------
    */ 
    
    var Imported = Imported || {};
    Imported.DKR_PictureOnSkillObserve = true;
    
    var DKR = DKR || {};          
    DKR.PictureOnSkillObserve = DKR.PictureOnSkillObserve || {}; 
    DKR.PictureOnSkillObserve.version = 2.0;
    
    
    ( () => {
    	
    	let picIsShow = true;
    	let textIsShow = true;
    	let picNumber = 1;
    	let picOrigin = 0;
    	let picCoordX = 20;
    	let picCoordY = 300;
    	let picScaleX = 100;
    	let picScaleY = 100;
    	let picOpacity = 255;
    	let picBlendMode = 0;
    	
    	let observerPictureMode = 'DATA';
    	
    	const skillDescrBackgroundImageSRC = 'onSkillObserveBackground';
    	const skillDescrBackgroundOrigin = 0;
    	const skillDescrBackgroundCoordX = 0;
    	const skillDescrBackgroundCoordY = 0;
    	const skillDescrBackgroundScaleX = 100;
    	const skillDescrBackgroundScaleY = 100;
    	const skillDescrBackgroundOpacity = 255;
    	const skillDescrBackgroundBlendMode = 0;
    	
    	let textPictureText = '';
    	const skillDescrTextOrigin = 0;
    	const skillDescrTextCoordX = 25;
    	const skillDescrTextCoordY = 175;
    	const skillDescrTextScaleX = 100;
    	const skillDescrTextScaleY = 100;
    	const skillDescrTextOpacity = 255;
    	const skillDescrTextBlendMode = 0;
    	
    	const normalColorTag = '\\C[0]';
    	const nameColorTag = '\\C[4]';
    	const mpCostColorTag = '\\C[1]';
    	const tpCostColorTag = '\\C[3]';
    	const tpGenColorTag = '\\C[11]';
    	const formulaColorTag = '\\C[8]';
    	const elementColorTag = '\\C[7]';
    	const simpleDescrColorTag = '\\C[6]';
    	const isCanCritColorTag = '\\C[10]';
    	const varianceColorTag = '\\C[14]';
    	const repeatsColorTag = '\\C[20]';
    	const statesColorTag = '\\C[27]';
    	const targetColorTag = '\\C[18]';
    	const damageTypeColorTag = '\\C[5]';
    
    	
    	
    	
    	DKR.PictureOnSkillObserve.Window_SkillList__UpdateHelp = Window_SkillList.prototype.updateHelp;
    	Window_SkillList.prototype.updateHelp = function(){
    		DKR.PictureOnSkillObserve.Window_SkillList__UpdateHelp.call(this);
    		
    		if(undefined === this.item()){
    			console.log('DKR.PictureOnSkillObserve: skill undefined...');
    			return;
    		}
    		
    		getSkillTextBySkilLData( getSkillDataToDraw(this.item()) );
    		
    		if(true === picIsShow){
    			
    			try{
    				if('IMAGE' === observerPictureMode){
    					let imageSRC = parseNotesForImageSRC(this.item());
    					$gameScreen.showPicture(picNumber, imageSRC, picOrigin, picCoordX, picCoordY, picScaleX, picScaleY, picOpacity, picBlendMode);
    				}else{
    					textIsShow = true;
    					$gameScreen.showPicture(picNumber, skillDescrBackgroundImageSRC, skillDescrBackgroundOrigin, skillDescrBackgroundCoordX, skillDescrBackgroundCoordY, skillDescrBackgroundScaleX, skillDescrBackgroundScaleY, skillDescrBackgroundOpacity, skillDescrBackgroundBlendMode);
    					
    					if('DATA' === observerPictureMode){
    						textPictureText = getSkillTextBySkilLData( getSkillDataToDraw(this.item()), true );
    					}else if('SIMPLE' === observerPictureMode){
    						textPictureText = getSkillTextBySkilLData( getSkillDataToDraw(this.item()), false );
    					}else if('DESCR' === observerPictureMode){
    						textPictureText = parseNotesForDescription(this.item());
    					}
    					$gameScreen.showPicture(picNumber + 1, "", picOrigin, skillDescrTextCoordX, skillDescrTextCoordY, skillDescrTextScaleX, skillDescrTextScaleY, skillDescrTextOpacity, skillDescrTextBlendMode);
    				}
    				
    			}catch (e) {
    				console.log('DKR.PictureOnSkillObserve: skill not exist or wrong notetag!');
    				return;
    			}
    		}
    		
    	}
    	
    	DKR.PictureOnSkillObserve.Scene_Battle__onSkillCancel = Scene_Battle.prototype.onSkillCancel;
    	Scene_Battle.prototype.onSkillCancel = function() {
    		DKR.PictureOnSkillObserve.Scene_Battle__onSkillCancel.call(this);
    		
    		if(true === picIsShow){
    			$gameScreen.erasePicture(picNumber);
    			if(true === textIsShow){
    				$gameScreen.erasePicture(picNumber + 1);
    			}
    		}
    	}
    	
    	DKR.PictureOnSkillObserve.Scene_Battle__onSkillOk = Scene_Battle.prototype.onSkillOk;
    	Scene_Battle.prototype.onSkillOk = function() {
    		DKR.PictureOnSkillObserve.Scene_Battle__onSkillOk.call(this);
    		
    		if(true === picIsShow){
    			$gameScreen.erasePicture(picNumber);
    			if(true === textIsShow){
    				$gameScreen.erasePicture(picNumber + 1);
    			}
    		}
    	};
    		
    	
    
    	let parseNotesForImageSRC = function(skill){
    		let notedata = skill.note.split(/[\r\n]+/);
    		let imageSRC = '';
    		let tag = 'ImageOnChooseSkill';
    		
    		for (let i = 0; i < notedata.length; i++) {
    			let line = notedata[i];
    			if (notedata[i].match(tag)) {
    				imageSRC = notedata[i + 1];
    				break;
    			}
    		}
    		
    		return imageSRC;
    	}
    
    	let parseNotesForDescription = function(skill){
    		let notedata = skill.note.split(/[\r\n]+/);
    		let descrText = '';
    		let tag = 'DescrOnChooseSkill';
    		let matchCount = 0;
    		for (let i = 0; i < notedata.length; i++) {
    			let line = notedata[i];
    			if (notedata[i].match(tag)) {
    				matchCount++;
    				if(2 === matchCount){
    					break;
    				}else{
    					descrText = '\\}\r\n';
    					continue;
    				}
    			}
    			if(1 === matchCount){
    				descrText += notedata[i] + '\r\n';
    			}
    		}
    		descrText += '\\{';
    		
    		return descrText;
    	}
    
    
    	
    	let getSkillDataToDraw = function(skill){
    		let skillName = skill.name;
    		let skillMpCost = skill.mpCost;
    		let skillTpCost = skill.tpCost;
    		let skillTpGain = skill.tpGain;
    		let skillDescr = skill.description;
    		let skillFormula = skill.damage.formula;
    		
    		let skillElement = 'Нет элемента';
    		if(0 === skill.damage.elementId){
    			skillElement = 'Обычная атака';
    		}else if(skill.damage.elementId >-1){
    			skillElement = $dataSystem.elements[skill.damage.elementId];
    		}
    		
    		let isSkillCanCrit = '';
    		if(true === skill.damage.critical){
    			isSkillCanCrit = 'Да';
    		}else{
    			isSkillCanCrit = 'Нет';
    		}
    		
    		let isSkillCanVariance = skill.damage.variance;
    		let skillRepeats = skill.repeats;
    		
    		let skillAddStates = [];
    		for(let n = 0; n < skill.effects.length; n++){
    			if(null === skill.effects[n]){
    				continue;
    			}
    			if(0 === skill.effects[n].dataId){
    				continue;
    			}
    			let statusId = skill.effects[n].dataId;
    			skillAddStates[n] = [$dataStates[statusId].name, skill.effects[n].value1 * 100];
    		}
    		if(0 === skillAddStates.length){
    			skillAddStates = [['Не накладывает статус!', 0]];
    		}
    		
    		let skillTarget = ''; 
    		switch(skill.scope){
    			case 0:
    				skillTarget = 'Нет цели';
    				break;
    			case 1:
    				skillTarget = '1 Враг';
    				break;
    			case 2:
    				skillTarget = 'Все Враги';
    				break;
    			case 3:
    				skillTarget = '1 случайный Враг';
    				break;
    			case 4:
    				skillTarget = '2 случайных Врага';
    				break;
    			case 5:
    				skillTarget = '3 случайных Врага';
    				break;
    			case 6:
    				skillTarget = '4 случайных Врага';
    				break;
    			case 7:
    				skillTarget = '1 Союзник';
    				break;
    			case 8:
    				skillTarget = 'Все Союзники';
    				break;
    			case 9:
    				skillTarget = '1 мертвый Союзник';
    				break;
    			case 10:
    				skillTarget = 'Все мертвые Союзники';
    				break;
    			case 11:
    				skillTarget = 'Сам кастер';
    				break;
    			default:
    				skillTarget = '???';
    				break;
    		}
    		
    		let skillDamageType = ''; 
    		switch(skill.damage.type){
    			case 0:
    				skillDamageType = 'Нет типа';
    				break;
    			case 1:
    				skillDamageType = 'Урон ХП';
    				break;
    			case 2:
    				skillDamageType = 'Урон МП';
    				break;
    			case 3:
    				skillDamageType = 'Восст-е ХП';
    				break;
    			case 4:
    				skillDamageType = 'Восстн-е МП';
    				break;
    			case 5:
    				skillDamageType = 'Вамп-м ХП';
    				break;
    			case 6:
    				skillDamageType = 'Вамп-м МП';
    				break;
    		}
    		
    		let skillDataToDisplay = [skillName, skillMpCost, skillTpCost, skillTpGain, skillDescr, skillFormula, skillElement, isSkillCanCrit, isSkillCanVariance, skillRepeats, skillAddStates, skillTarget, skillDamageType];
    		return skillDataToDisplay;
    	}
    	
    	
    	let getSkillTextBySkilLData = function(skillData, isFullText){	
    		let skillText = '';
    	
    		if(true === isFullText){
    		skillText = `\\}
    ${targetColorTag}Цель:${normalColorTag} ${skillData[11]} | ${damageTypeColorTag}Тип:${normalColorTag} ${skillData[12]}  			
    ${mpCostColorTag}Стоимость МП:${normalColorTag} ${skillData[1]} | ${tpCostColorTag}Стоимость ТП:${normalColorTag} ${skillData[2]} | ${tpGenColorTag}Генерация ТП:${normalColorTag} ${skillData[3]}
    ${formulaColorTag}Формула:${normalColorTag} ${skillData[5]} | ${elementColorTag}Элемент:${normalColorTag} ${skillData[6]}
    ${isCanCritColorTag}Может критовать:${normalColorTag} ${skillData[7]} | ${varianceColorTag}Разброс урона:${normalColorTag} ${skillData[8]}% | ${repeatsColorTag}Повторения:${normalColorTag} ${skillData[9]}
    ${statesColorTag}Накладывает состояния:${normalColorTag} `;
    
    			for(let n = 0; n < skillData[10].length; n++){
    				let currentStatus = skillData[10][n];
    				if(undefined === currentStatus){
    					continue;
    				}
    				skillText += currentStatus[0] + '(' + currentStatus[1] + '%)'+ '\r\n';	
    			}
    			skillText += '\\{';
    		}else{
    			skillText = `\\}
    ${nameColorTag}Название:${normalColorTag} ${skillData[0]} | ${targetColorTag}Цель:${normalColorTag} ${skillData[11]} 		
    ${mpCostColorTag}Стоимость МП:${normalColorTag} ${skillData[1]} | ${tpCostColorTag}Стоимость ТП:${normalColorTag} ${skillData[2]} | ${tpGenColorTag}Генерация ТП:${normalColorTag} ${skillData[3]}
    ${simpleDescrColorTag}Описание:${normalColorTag}
    ${skillData[4]} \\{`
    		}
    
    		return skillText;
    	}
    	
    	
    
    	DKR.PictureOnSkillObserve.enablePicture = function(){
    		picIsShow = true;
    	}
    	DKR.PictureOnSkillObserve.dissablePicture = function(){
    		picIsShow = false;
    	}
    	DKR.PictureOnSkillObserve.setObserverPictureMode = function(MODE){
    		observerPictureMode = MODE;
    	}
    	
    	
    	DKR.PictureOnSkillObserve.setPictureNumber = function(pNumber){
    		if(pNumber < 0){
    			console.log('DKR.PictureOnSkillObserve: picture number can`t be below zero!');
    			return;
    		}else if(pNumber > 95){
    			console.log('DKR.PictureOnSkillObserve: picture number can`t be more then 90!');
    			return;
    		}
    		picNumber = pNumber;
    	}
    	
    	DKR.PictureOnSkillObserve.setPictureOrigin = function(pOrigin){
    		picOrigin = pOrigin;
    	}
    	
    	DKR.PictureOnSkillObserve.setPictureCoordX = function(pCoordX){
    		if(pCoordX < 0){
    			console.log('DKR.PictureOnSkillObserve: picture coordinate X can`t be below zero!');
    			return;
    		}
    		picCoordX = pCoordX;
    	}
    	
    	DKR.PictureOnSkillObserve.setPictureCoordY = function(pCoordY){
    		if(pCoordY < 0){
    			console.log('DKR.PictureOnSkillObserve: picture coordinate Y can`t be below zero!');
    			return;
    		}
    		picCoordY = pCoordY;
    	}
    	
    	DKR.PictureOnSkillObserve.setPictureScaleX = function(pScaleX){
    		if(pScaleX < 0){
    			console.log('DKR.PictureOnSkillObserve: picture scale X can`t be below zero!');
    			return;
    		}
    		picScaleX = pScaleX;
    	}
    	
    	DKR.PictureOnSkillObserve.setPictureScaleY = function(pScaleY){
    		if(pScaleY < 0){
    			console.log('DKR.PictureOnSkillObserve: picture scale Y can`t be below zero!');
    			return;
    		}
    		picScaleX = pScaleX;
    	}
    	
    	DKR.PictureOnSkillObserve.setPictureOpacity = function(pOpacity){
    		picOpacity = pOpacity;
    	}
    	
    	DKR.PictureOnSkillObserve.setPictureBlendMode = function(pBlendMode ){
    		picBlendMode  = pBlendMode ;
    	}
    	
    	
    	
    	
    	//Thanks to Yoji Ojima
    	const _Game_Picture_show = Game_Picture.prototype.show;
        Game_Picture.prototype.show = function() {
            _Game_Picture_show.apply(this, arguments);
            if (this._name === "" && textPictureText) {
    			console.log('textPictureText:');
    			console.log(textPictureText);
                this.mzkp_text = textPictureText;
                this.mzkp_textChanged = true;
                textPictureText = '';
            }
        };
    	
    	const _Sprite_Picture_destroy = Sprite_Picture.prototype.destroy;
        Sprite_Picture.prototype.destroy = function() {
            destroyTextPictureBitmap(this.bitmap);
            _Sprite_Picture_destroy.apply(this, arguments);
        };
    
        const _Sprite_Picture_updateBitmap = Sprite_Picture.prototype.updateBitmap;
        Sprite_Picture.prototype.updateBitmap = function() {
            _Sprite_Picture_updateBitmap.apply(this, arguments);
            if (this.visible && this._pictureName === "") {
                const picture = this.picture();
                const text = picture ? picture.mzkp_text || "" : "";
                const textChanged = picture && picture.mzkp_textChanged;
                if (this.mzkp_text !== text || textChanged) {
                    this.mzkp_text = text;
                    destroyTextPictureBitmap(this.bitmap);
                    this.bitmap = createTextPictureBitmap(text);
                    picture.mzkp_textChanged = false;
                }
            } else {
                this.mzkp_text = "";
            }
        };
    
        function createTextPictureBitmap(text) {
            const tempWindow = new Window_Base(new Rectangle());
            const size = {width:750, height: 300}; //MV: hardcode //MZ: textSizeEx(text)
            tempWindow.padding = 0;
            tempWindow.move(0, 0, size.width, size.height);
            tempWindow.createContents();
            tempWindow.drawTextEx(text, 0, 0, 0);
            const bitmap = tempWindow.contents;
            tempWindow.contents = null;
            tempWindow.destroy();
            bitmap.mzkp_isTextPicture = true;
            return bitmap;
        }
    
        function destroyTextPictureBitmap(bitmap) {
            if (bitmap && bitmap.mzkp_isTextPicture) {
                bitmap.clear();
            }
        }
    	
    	
    
    })();


    Спойлер MZ, версия 2.0:

    Код:
    /*:
     *-----------------------------------------------------------------------------
     *  DKR PictureOnSkillObserve
     *-----------------------------------------------------------------------------
     *  For: RPGMAKER MZ
     *  DKR_PictureOnSkillObserve_2.0_MZ.js
     *-----------------------------------------------------------------------------
     *  26.05.2021 - Версия 2.0.0
     *-----------------------------------------------------------------------------
     * Поставляется AS-IS.
     * Вся ответственность при использовании - на Пользователе!
     *-----------------------------------------------------------------------------
     *-----------------------------------------------------------------------------
     * @author DarchanKaen
     * @target MZ
     * @plugindesc (v.2.0.0) Плагин позволяет отображать Картинку / Описание при выборе скила в бою, для каждого скила - свою.
     * @help
     *   DKR PictureOnSkillObserve 2.0 MZ
     * ----------------------------------------------------------------------------
     * ---Общая информация:
     * Плагин позволяет отображать Картинку или Описание
     * (автоматическое или ручное) при выборе скила в бою,
     * для каждого скила - свою Картинку / Описание.
     * Картина / Описание отображается в фоне Окна умений.
     * Для режима Картинок, они должны быть в папке "\img\pictures".
     * Для режимов Описания, в папке "\img\pictures" должен быть (!!!) 
     * файл "onSkillObserveBackground.png" - это фон описания 
     * (размер изображения 816x624).
     * ---Использование:
     * В Примечании к Скилу напишите:
     *<ImageOnChooseSkill>
     *	Название файла картинки БЕЗ РАСШИРЕНИЯ И КАВЫЧЕК! (например: Actor1 )
     *</ImageOnChooseSkill>
     * И / ИЛИ
     * <DescrOnChooseSkill>
     * 	Текст описания. Допустимы коды сообщений, например цвета типа \C[n]...
     * </DescrOnChooseSkill>
     * Если у скила в Примечании нет данных тегов, то ничего доп-го не отображается.
     * ---Команды (для раздела "Скрипт"):
     * - Включение и отключение показа Картинки / Описания:
     * DKR.PictureOnSkillObserve.enablePicture(); - показывать Картинку / Описание.
     * DKR.PictureOnSkillObserve.dissablePicture(); - не показывать Картинку / Описание. 
     * DKR.PictureOnSkillObserve.dissablePicture(); - не показывать Картинку / Описание. 
     * DKR.PictureOnSkillObserve.setObserverPictureMode('MODE'); - задать режим отображения Картинки / Описания.
     * где 'MODE' - режим, варианты: 
     * 'IMAGE' (Картинка), 
     * 'DATA' (Полное описание), 
     * 'SIMPLE' (Упрощеное описание), 
     * 'DESCR' (Текст между тегов DescrOnChooseSkill).
     * режим указывается в ковычках, режим может быть выбрано ТОЛЬКО один; по-умолчанию: 'DATA'.
      - Настройки отображения Картинки (не влияет на режимы Описания!):
     * DKR.PictureOnSkillObserve.setPictureNumber(N); - задать номер Картинки; по-умолчанию: 90. Номер должен меньше 95!
     * DKR.PictureOnSkillObserve.setPictureOrigin(N); - задать начало координат Картинки; по-умолчанию: 0.
     * DKR.PictureOnSkillObserve.setPictureCoordX(N); - задать координату X Картинки; по-умолчанию: 20.
     * DKR.PictureOnSkillObserve.setPictureCoordY(N); - задать координату Y Картинки; по-умолчанию: 300.
     * DKR.PictureOnSkillObserve.setPictureScaleX(N); - задать масштаб X Картинки; по-умолчанию: 100.
     * DKR.PictureOnSkillObserve.setPictureScaleY(N); - задать масштаб Y Картинки; по-умолчанию: 100.
     * DKR.PictureOnSkillObserve.setPictureOpacity(N); - задать прозрачность Картинки; по-умолчанию: 255.
     * DKR.PictureOnSkillObserve.setPictureBlendMode(N); - задать режим смешивания Картинки; по-умолчанию: 0.
     * где N - значание в виде целого не отрицательного числа.
     * ----------------------------------------------------------------------------
    */ 
    
    var Imported = Imported || {};
    Imported.DKR_PictureOnSkillObserve = true;
    
    var DKR = DKR || {};          
    DKR.PictureOnSkillObserve = DKR.PictureOnSkillObserve || {}; 
    DKR.PictureOnSkillObserve.version = 2.0;
    
    
    ( () => {
    	
    	let picIsShow = true;
    	let textIsShow = true;
    	let picNumber = 90;
    	let picOrigin = 0;
    	let picCoordX = 20;
    	let picCoordY = 300;
    	let picScaleX = 100;
    	let picScaleY = 100;
    	let picOpacity = 255;
    	let picBlendMode = 0;
    	
    	let observerPictureMode = 'DATA'; //IMAGE, DATA, SIMPLE, DESCR
    	
    	const skillDescrBackgroundImageSRC = 'onSkillObserveBackground';
    	const skillDescrBackgroundOrigin = 0;
    	const skillDescrBackgroundCoordX = 0;
    	const skillDescrBackgroundCoordY = 0;
    	const skillDescrBackgroundScaleX = 100;
    	const skillDescrBackgroundScaleY = 100;
    	const skillDescrBackgroundOpacity = 255;
    	const skillDescrBackgroundBlendMode = 0;
    	
    	let textPictureText = '';
    	const skillDescrTextOrigin = 0;
    	const skillDescrTextCoordX = 25;
    	const skillDescrTextCoordY = 75;
    	const skillDescrTextScaleX = 100;
    	const skillDescrTextScaleY = 100;
    	const skillDescrTextOpacity = 255;
    	const skillDescrTextBlendMode = 0;
    	
    	const normalColorTag = '\\C[0]';
    	const nameColorTag = '\\C[4]';
    	const mpCostColorTag = '\\C[1]';
    	const tpCostColorTag = '\\C[3]';
    	const tpGenColorTag = '\\C[11]';
    	const formulaColorTag = '\\C[8]';
    	const elementColorTag = '\\C[7]';
    	const simpleDescrColorTag = '\\C[6]';
    	const isCanCritColorTag = '\\C[10]';
    	const varianceColorTag = '\\C[14]';
    	const repeatsColorTag = '\\C[20]';
    	const statesColorTag = '\\C[27]';
    	const targetColorTag = '\\C[18]';
    	const damageTypeColorTag = '\\C[5]';
    
    
    
    	
    	DKR.PictureOnSkillObserve.Window_SkillList__UpdateHelp = Window_SkillList.prototype.updateHelp;
    	Window_SkillList.prototype.updateHelp = function(){
    		DKR.PictureOnSkillObserve.Window_SkillList__UpdateHelp.call(this);
    		
    		if(undefined === this.item()){
    			console.log('DKR.PictureOnSkillObserve: skill undefined...');
    			return;
    		}
    		
    		getSkillTextBySkilLData( getSkillDataToDraw(this.item()) );
    		
    		if(true === picIsShow){
    			
    			try{
    				if('IMAGE' === observerPictureMode){
    					let imageSRC = parseNotesForImageSRC(this.item());
    					$gameScreen.showPicture(picNumber, imageSRC, picOrigin, picCoordX, picCoordY, picScaleX, picScaleY, picOpacity, picBlendMode);
    				}else{
    					textIsShow = true;
    					$gameScreen.showPicture(picNumber, skillDescrBackgroundImageSRC, skillDescrBackgroundOrigin, skillDescrBackgroundCoordX, skillDescrBackgroundCoordY, skillDescrBackgroundScaleX, skillDescrBackgroundScaleY, skillDescrBackgroundOpacity, skillDescrBackgroundBlendMode);
    					
    					if('DATA' === observerPictureMode){
    						textPictureText = getSkillTextBySkilLData( getSkillDataToDraw(this.item()), true );
    					}else if('SIMPLE' === observerPictureMode){
    						textPictureText = getSkillTextBySkilLData( getSkillDataToDraw(this.item()), false );
    					}else if('DESCR' === observerPictureMode){
    						textPictureText = parseNotesForDescription(this.item());
    					}
    					$gameScreen.showPicture(picNumber + 1, "", picOrigin, skillDescrTextCoordX, skillDescrTextCoordY, skillDescrTextScaleX, skillDescrTextScaleY, skillDescrTextOpacity, skillDescrTextBlendMode);
    				}
    				
    			}catch (e) {
    				console.log('DKR.PictureOnSkillObserve: skill not exist or wrong notetag!');
    				return;
    			}
    		}
    		
    	}
    	
    	DKR.PictureOnSkillObserve.Scene_Battle__onSkillCancel = Scene_Battle.prototype.onSkillCancel;
    	Scene_Battle.prototype.onSkillCancel = function() {
    		DKR.PictureOnSkillObserve.Scene_Battle__onSkillCancel.call(this);
    		
    		if(true === picIsShow){
    			$gameScreen.erasePicture(picNumber);
    			if(true === textIsShow){
    				$gameScreen.erasePicture(picNumber + 1);
    			}
    		}
    	}
    	
    	DKR.PictureOnSkillObserve.Scene_Battle__onSkillOk = Scene_Battle.prototype.onSkillOk;
    	Scene_Battle.prototype.onSkillOk = function() {
    		DKR.PictureOnSkillObserve.Scene_Battle__onSkillOk.call(this);
    		
    		if(true === picIsShow){
    			$gameScreen.erasePicture(picNumber);
    			if(true === textIsShow){
    				$gameScreen.erasePicture(picNumber + 1);
    			}
    		}
    	};
    	
    	
    	
    	let parseNotesForImageSRC = function(skill){
    		let notedata = skill.note.split(/[\r\n]+/);
    		let imageSRC = '';
    		let tag = 'ImageOnChooseSkill';
    		
    		for (let i = 0; i < notedata.length; i++) {
    			let line = notedata[i];
    			if (notedata[i].match(tag)) {
    				imageSRC = notedata[i + 1];
    				break;
    			}
    		}
    		
    		return imageSRC;
    	}
    
    	let parseNotesForDescription = function(skill){
    		let notedata = skill.note.split(/[\r\n]+/);
    		let descrText = '';
    		let tag = 'DescrOnChooseSkill';
    		let matchCount = 0;
    		for (let i = 0; i < notedata.length; i++) {
    			let line = notedata[i];
    			if (notedata[i].match(tag)) {
    				matchCount++;
    				if(2 === matchCount){
    					break;
    				}else{
    					descrText = '\r\n';
    					continue;
    				}
    			}
    			if(1 === matchCount){
    				descrText += notedata[i] + '\r\n'
    			}
    		}
    		
    		return descrText;
    	}
    
    
    	
    	let getSkillDataToDraw = function(skill){
    		let skillName = skill.name;
    		let skillMpCost = skill.mpCost;
    		let skillTpCost = skill.tpCost;
    		let skillTpGain = skill.tpGain;
    		let skillDescr = skill.description;
    		let skillFormula = skill.damage.formula;
    		
    		let skillElement = 'Нет элемента';
    		if(0 === skill.damage.elementId){
    			skillElement = 'Обычная атака';
    		}else if(skill.damage.elementId >-1){
    			skillElement = $dataSystem.elements[skill.damage.elementId];
    		}
    		
    		let isSkillCanCrit = '';
    		if(true === skill.damage.critical){
    			isSkillCanCrit = 'Да';
    		}else{
    			isSkillCanCrit = 'Нет';
    		}
    		
    		let isSkillCanVariance = skill.damage.variance;
    		let skillRepeats = skill.repeats;
    		
    		let skillAddStates = [];
    		for(let n = 0; n < skill.effects.length; n++){
    			if(null === skill.effects[n]){
    				continue;
    			}
    			if(0 === skill.effects[n].dataId){
    				continue;
    			}
    			let statusId = skill.effects[n].dataId;
    			skillAddStates[n] = [$dataStates[statusId].name, skill.effects[n].value1 * 100];
    		}
    		if(0 === skillAddStates.length){
    			skillAddStates = [['Не накладывает статус!', 0]];
    		}
    		
    		let skillTarget = ''; 
    		switch(skill.scope){
    			case 0:
    				skillTarget = 'Нет цели';
    				break;
    			case 1:
    				skillTarget = '1 Враг';
    				break;
    			case 2:
    				skillTarget = 'Все Враги';
    				break;
    			case 3:
    				skillTarget = '1 случайный Враг';
    				break;
    			case 4:
    				skillTarget = '2 случайных Врага';
    				break;
    			case 5:
    				skillTarget = '3 случайных Врага';
    				break;
    			case 6:
    				skillTarget = '4 случайных Врага';
    				break;
    			case 7:
    				skillTarget = '1 Союзник';
    				break;
    			case 8:
    				skillTarget = 'Все Союзники';
    				break;
    			case 9:
    				skillTarget = '1 мертвый Союзник';
    				break;
    			case 10:
    				skillTarget = 'Все мертвые Союзники';
    				break;
    			case 11:
    				skillTarget = 'Сам кастер';
    				break;
    			default:
    				skillTarget = '???';
    				break;
    		}
    		
    		let skillDamageType = ''; 
    		switch(skill.damage.type){
    			case 0:
    				skillDamageType = 'Нет типа';
    				break;
    			case 1:
    				skillDamageType = 'Урон ХП';
    				break;
    			case 2:
    				skillDamageType = 'Урон МП';
    				break;
    			case 3:
    				skillDamageType = 'Восст-е ХП';
    				break;
    			case 4:
    				skillDamageType = 'Восстн-е МП';
    				break;
    			case 5:
    				skillDamageType = 'Вамп-м ХП';
    				break;
    			case 6:
    				skillDamageType = 'Вамп-м МП';
    				break;
    		}
    		
    		let skillDataToDisplay = [skillName, skillMpCost, skillTpCost, skillTpGain, skillDescr, skillFormula, skillElement, isSkillCanCrit, isSkillCanVariance, skillRepeats, skillAddStates, skillTarget, skillDamageType];
    		return skillDataToDisplay;
    	}
    	
    	
    	let getSkillTextBySkilLData = function(skillData, isFullText){	
    		let skillText = '';
    	
    		if(true === isFullText){
    			skillText = `
    ${targetColorTag}Цель:${normalColorTag} ${skillData[11]} | ${damageTypeColorTag}Тип:${normalColorTag} ${skillData[12]}  			
    ${mpCostColorTag}Стоимость МП:${normalColorTag} ${skillData[1]} | ${tpCostColorTag}Стоимость ТП:${normalColorTag} ${skillData[2]} | ${tpGenColorTag}Генерация ТП:${normalColorTag} ${skillData[3]}
    ${formulaColorTag}Формула:${normalColorTag} ${skillData[5]} | ${elementColorTag}Элемент:${normalColorTag} ${skillData[6]}
    ${isCanCritColorTag}Может критовать:${normalColorTag} ${skillData[7]} | ${varianceColorTag}Разброс урона:${normalColorTag} ${skillData[8]}% | ${repeatsColorTag}Повторения:${normalColorTag} ${skillData[9]}
    ${statesColorTag}Накладывает состояния:${normalColorTag} `;
    
    			for(let n = 0; n < skillData[10].length; n++){
    				let currentStatus = skillData[10][n];
    				if(undefined === currentStatus){
    					continue;
    				}
    				skillText += currentStatus[0] + '(' + currentStatus[1] + '%)'+ '\r\n';
    			}
    			
    		}else{
    			skillText = `
    ${nameColorTag}Название:${normalColorTag} ${skillData[0]} | ${targetColorTag}Цель:${normalColorTag} ${skillData[11]} 		
    ${mpCostColorTag}Стоимость МП:${normalColorTag} ${skillData[1]} | ${tpCostColorTag}Стоимость ТП:${normalColorTag} ${skillData[2]} | ${tpGenColorTag}Генерация ТП:${normalColorTag} ${skillData[3]}
    ${simpleDescrColorTag}Описание:${normalColorTag}
    ${skillData[4]}`
    		}
    
    		return skillText;
    	}
    	
    
    
    	DKR.PictureOnSkillObserve.enablePicture = function(){
    		picIsShow = true;
    	}
    	DKR.PictureOnSkillObserve.dissablePicture = function(){
    		picIsShow = false;
    	}
    	DKR.PictureOnSkillObserve.setObserverPictureMode = function(MODE){
    		observerPictureMode = MODE;
    	}
    	
    	
    	DKR.PictureOnSkillObserve.setPictureNumber = function(pNumber){
    		if(pNumber < 0){
    			console.log('DKR.PictureOnSkillObserve: picture number can`t be below zero!');
    			return;
    		}else if(pNumber > 95){
    			console.log('DKR.PictureOnSkillObserve: picture number can`t be more then 90!');
    			return;
    		}
    		picNumber = pNumber;
    	}
    	
    	DKR.PictureOnSkillObserve.setPictureOrigin = function(pOrigin){
    		picOrigin = pOrigin;
    	}
    	
    	DKR.PictureOnSkillObserve.setPictureCoordX = function(pCoordX){
    		if(pCoordX < 0){
    			console.log('DKR.PictureOnSkillObserve: picture coordinate X can`t be below zero!');
    			return;
    		}
    		picCoordX = pCoordX;
    	}
    	
    	DKR.PictureOnSkillObserve.setPictureCoordY = function(pCoordY){
    		if(pCoordY < 0){
    			console.log('DKR.PictureOnSkillObserve: picture coordinate Y can`t be below zero!');
    			return;
    		}
    		picCoordY = pCoordY;
    	}
    	
    	DKR.PictureOnSkillObserve.setPictureScaleX = function(pScaleX){
    		if(pScaleX < 0){
    			console.log('DKR.PictureOnSkillObserve: picture scale X can`t be below zero!');
    			return;
    		}
    		picScaleX = pScaleX;
    	}
    	
    	DKR.PictureOnSkillObserve.setPictureScaleY = function(pScaleY){
    		if(pScaleY < 0){
    			console.log('DKR.PictureOnSkillObserve: picture scale Y can`t be below zero!');
    			return;
    		}
    		picScaleX = pScaleX;
    	}
    	
    	DKR.PictureOnSkillObserve.setPictureOpacity = function(pOpacity){
    		picOpacity = pOpacity;
    	}
    	
    	DKR.PictureOnSkillObserve.setPictureBlendMode = function(pBlendMode ){
    		picBlendMode  = pBlendMode ;
    	}
    	
    	
    	
    	
    	//Thanks to Yoji Ojima
    	const _Game_Picture_show = Game_Picture.prototype.show;
        Game_Picture.prototype.show = function() {
            _Game_Picture_show.apply(this, arguments);
            if (this._name === "" && textPictureText) {
                this.mzkp_text = textPictureText;
                this.mzkp_textChanged = true;
                textPictureText = '';
            }
        };
    	
    	const _Sprite_Picture_destroy = Sprite_Picture.prototype.destroy;
        Sprite_Picture.prototype.destroy = function() {
            destroyTextPictureBitmap(this.bitmap);
            _Sprite_Picture_destroy.apply(this, arguments);
        };
    
        const _Sprite_Picture_updateBitmap = Sprite_Picture.prototype.updateBitmap;
        Sprite_Picture.prototype.updateBitmap = function() {
            _Sprite_Picture_updateBitmap.apply(this, arguments);
            if (this.visible && this._pictureName === "") {
                const picture = this.picture();
                const text = picture ? picture.mzkp_text || "" : "";
                const textChanged = picture && picture.mzkp_textChanged;
                if (this.mzkp_text !== text || textChanged) {
                    this.mzkp_text = text;
                    destroyTextPictureBitmap(this.bitmap);
                    this.bitmap = createTextPictureBitmap(text);
                    picture.mzkp_textChanged = false;
                }
            } else {
                this.mzkp_text = "";
            }
        };
    
        function createTextPictureBitmap(text) {
            const tempWindow = new Window_Base(new Rectangle());
            const size = tempWindow.textSizeEx(text);
            tempWindow.padding = 0;
            tempWindow.move(0, 0, size.width, size.height);
            tempWindow.createContents();
            tempWindow.drawTextEx(text, 0, 0, 0);
            const bitmap = tempWindow.contents;
            tempWindow.contents = null;
            tempWindow.destroy();
            bitmap.mzkp_isTextPicture = true;
            return bitmap;
        }
    
        function destroyTextPictureBitmap(bitmap) {
            if (bitmap && bitmap.mzkp_isTextPicture) {
                bitmap.destroy();
            }
        }
    	
    
    
    })();


    Спойлер Версия 1.0, устаревшая:

    Код:
    /*:
     *-----------------------------------------------------------------------------
     *  DKR PictureOnSkillObserve
     *-----------------------------------------------------------------------------
     *  For: RPGMAKER MV / MZ
     *  DKR_PictureOnSkillObserve_MV_MZ.js
     *-----------------------------------------------------------------------------
     *  24.05.2021 - Версия 1.0.0
     *-----------------------------------------------------------------------------
     * Поставляется AS-IS.
     * Вся ответственность при использовании - на Пользователе!
     *-----------------------------------------------------------------------------
     *-----------------------------------------------------------------------------
     * @author DarchanKaen
     * @plugindesc (v.1.0.0) Плагин позволяет отображать Картинку при выборе скила в бою, для каждого скила - свою.
     * @help
     *   DKR PictureOnSkillObserve
     * ----------------------------------------------------------------------------
     * ---Общая информация:
     * Плагин позволяет отображать Картинку 
     * при выборе скила в бою,
     * для каждого скила - свою.
     * Картина отображается в фоне Окна умений.
     * В Примечании к Скилу напишите:
     *<ImageOnChooseSkill>
     *Название файла картинки БЕЗ РАСШИРЕНИЯ И КАВЫЧЕК! (например: Actor1 )
     *</ImageOnChooseSkill>
     * - Включение и отключение показа Картинки:
     * DKR.PictureOnSkillObserve.enablePicture(); - показывать Картинку.
     * DKR.PictureOnSkillObserve.dissablePicture(); - не показывать Картинку. 
      - Настройки отображения Картинки:
     * DKR.PictureOnSkillObserve.setPictureNumber(); - задать номер Картинки; по-умолчанию: 1.
     * DKR.PictureOnSkillObserve.setPictureOrigin(); - задать начало координат Картинки; по-умолчанию: 0.
     * DKR.PictureOnSkillObserve.setPictureCoordX(); - задать координату X Картинки; по-умолчанию: 20.
     * DKR.PictureOnSkillObserve.setPictureCoordY(); - задать координату Y Картинки; по-умолчанию: 300.
     * DKR.PictureOnSkillObserve.setPictureScaleX(); - задать масштаб X Картинки; по-умолчанию: 100.
     * DKR.PictureOnSkillObserve.setPictureScaleY(); - задать масштаб Y Картинки; по-умолчанию: 100.
     * DKR.PictureOnSkillObserve.setPictureOpacity(); - задать прозрачность Картинки; по-умолчанию: 255.
     * DKR.PictureOnSkillObserve.setPictureBlendMode (); - задать режим смешивания Картинки; по-умолчанию: 0.
     * ----------------------------------------------------------------------------
    */ 
    
    var Imported = Imported || {};
    Imported.DKR_PictureOnSkillObserve = true;
    
    var DKR = DKR || {};          
    DKR.PictureOnSkillObserve = DKR.PictureOnSkillObserve || {}; 
    
    
    
    ( () => {
    	
    	DKR.PictureOnSkillObserve.picIsShow = true;
    	DKR.PictureOnSkillObserve.picNumber = 1;
    	DKR.PictureOnSkillObserve.picOrigin = 0;
    	DKR.PictureOnSkillObserve.picCoordX = 20;
    	DKR.PictureOnSkillObserve.picCoordY = 300;
    	DKR.PictureOnSkillObserve.picScaleX = 100;
    	DKR.PictureOnSkillObserve.picScaleY = 100;
    	DKR.PictureOnSkillObserve.picOpacity = 255;
    	DKR.PictureOnSkillObserve.picBlendMode = 0;
    	
    	
    	
    	Window_SkillList.prototype.updateHelp = function() {
    		this.setHelpWindowItem(this.item());
    
    		if(true === DKR.PictureOnSkillObserve.picIsShow){
    			try{
    				let imageSRC = parseNotesForImageSRC(this.item());
    				$gameScreen.showPicture(DKR.PictureOnSkillObserve.picNumber, imageSRC, DKR.PictureOnSkillObserve.picOrigin, DKR.PictureOnSkillObserve.picCoordX, DKR.PictureOnSkillObserve.picCoordY, DKR.PictureOnSkillObserve.picScaleX, DKR.PictureOnSkillObserve.picScaleY, DKR.PictureOnSkillObserve.picOpacity, DKR.PictureOnSkillObserve.picBlendMode);
    			}catch (e) {
    				console.log('DKR.PictureOnSkillObserve: skill not exist or wrong notetag!');
    				return;
    			}
    		}
    	
    	};
    	
    	Scene_Battle.prototype.onSkillCancel = function() {
    		this._skillWindow.hide();
    		this._actorCommandWindow.activate();
    		
    		if(true === DKR.PictureOnSkillObserve.picIsShow){
    			$gameScreen.erasePicture(DKR.PictureOnSkillObserve.picNumber);
    		}
    	};
    	
    	
    	Game_Action.prototype.apply = function(target) {
    		if(true === DKR.PictureOnSkillObserve.picIsShow){
    			$gameScreen.erasePicture(DKR.PictureOnSkillObserve.picNumber);
    		}
    		
    		var result = target.result();
    		this.subject().clearResult();
    		result.clear();
    		result.used = this.testApply(target);
    		result.missed = (result.used && Math.random() >= this.itemHit(target));
    		result.evaded = (!result.missed && Math.random() < this.itemEva(target));
    		result.physical = this.isPhysical();
    		result.drain = this.isDrain();
    		if (result.isHit()) {
    			if (this.item().damage.type > 0) {
    				result.critical = (Math.random() < this.itemCri(target));
    				var value = this.makeDamageValue(target, result.critical);
    				this.executeDamage(target, value);
    			}
    			this.item().effects.forEach(function(effect) {
    				this.applyItemEffect(target, effect);
    			}, this);
    			this.applyItemUserEffect(target);
    		}
    	};
    
    
    	let parseNotesForImageSRC = function(skill){
    		let notedata = skill.note.split(/[\r\n]+/);
    		let imageSRC = '';
    		let tag = 'ImageOnChooseSkill';
    		
    		for (let i = 0; i < notedata.length; i++) {
    			let line = notedata[i];
    			if (notedata[i].match(tag)) {
    				imageSRC = notedata[i + 1];
    				break;
    			}
    		}
    		
    		return imageSRC;
    	}
    
    
    
    	DKR.PictureOnSkillObserve.enablePicture = function(){
    		DKR.PictureOnSkillObserve.picIsShow = true;
    	}
    	
    	DKR.PictureOnSkillObserve.dissablePicture = function(){
    		DKR.PictureOnSkillObserve.picIsShow = false;
    	}
    	
    	
    	DKR.PictureOnSkillObserve.setPictureNumber = function(pNumber){
    		if(pNumber < 0){
    			console.log('DKR.PictureOnSkillObserve: picture number can`t be below zero!');
    			return;
    		}
    		DKR.PictureOnSkillObserve.picNumber = pNumber;
    	}
    	
    	DKR.PictureOnSkillObserve.setPictureOrigin = function(pOrigin){
    		DKR.PictureOnSkillObserve.picOrigin = pOrigin;
    	}
    	
    	DKR.PictureOnSkillObserve.setPictureCoordX = function(pCoordX){
    		if(pCoordX < 0){
    			console.log('DKR.PictureOnSkillObserve: picture coordinate X can`t be below zero!');
    			return;
    		}
    		DKR.PictureOnSkillObserve.picCoordX = pCoordX;
    	}
    	
    	DKR.PictureOnSkillObserve.setPictureCoordY = function(pCoordY){
    		if(pCoordY < 0){
    			console.log('DKR.PictureOnSkillObserve: picture coordinate Y can`t be below zero!');
    			return;
    		}
    		DKR.PictureOnSkillObserve.picCoordY = pCoordY;
    	}
    	
    	DKR.PictureOnSkillObserve.setPictureScaleX = function(pScaleX){
    		if(pScaleX < 0){
    			console.log('DKR.PictureOnSkillObserve: picture scale X can`t be below zero!');
    			return;
    		}
    		DKR.PictureOnSkillObserve.picScaleX = pScaleX;
    	}
    	
    	DKR.PictureOnSkillObserve.setPictureScaleY = function(pScaleY){
    		if(pScaleY < 0){
    			console.log('DKR.PictureOnSkillObserve: picture scale Y can`t be below zero!');
    			return;
    		}
    		DKR.PictureOnSkillObserve.picScaleX = pScaleX;
    	}
    	
    	DKR.PictureOnSkillObserve.setPictureOpacity = function(pOpacity){
    		DKR.PictureOnSkillObserve.picOpacity = pOpacity;
    	}
    	
    	DKR.PictureOnSkillObserve.setPictureBlendMode = function(pBlendMode ){
    		DKR.PictureOnSkillObserve.picBlendMode  = pBlendMode ;
    	}
    	
    
    })();






    Спойлер Изменения в Версии 2.0:
    1. Увеличена совместимость с другими плагинами.
    2. Оптимизировано удаление Картинки / Описания - теперь оно удаляется сразу после выбора скила (до выбора Цели).
    3. Добавлен новый функционал - отображение Описания скила.


    Спойлер Ссылки на загрузку, версия 2.0:


    Обратите внимание!
    Для корректно работы плагина в папке "\img\pictures" должен быть (!!!) файл "onSkillObserveBackground.png" - это фон Описания (размер изображения 816x624).
    Спойлер Файл фона, ПКМ и сохраните как Изображение:


    Условия поставки плагина:
    Поставляется AS-IS.
    Вся ответственность при использовании - на Пользователе!
    !

    Совместимость с другими плагинами Автор не гарантирует!

    Спойлер Лирическое отступление:
    Более продвинутая версия плагина для Seibur.
    Мне тяжело представить, зачем такое нужно...Но опыт интересный.
    2.0
    Да, описание скила может быть полезной штукой.
    На MV, правда, не очень красиво вышло.
    Последний раз редактировалось Darchan Kaen; 13.09.2022 в 18:38. Причина: Выход версии плагина 2.0...скрины перезалиты

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
[MV -+ MZ]PictureOnSkillObserve